<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>数组去重</title>
</head>
<body>
    <script>
        //双重for循环
        // function distinct(arr){
        //     let n = arr.length
        //     for(let i = 0;i < n ;i++){
        //         for(let j =i+1;j < n;j++){
        //             if(arr[i]===arr[j]){
        //                 arr.splice(j,1)
        //                 n--
        //                 j--
        //             }
        //         }
        //     }
        //     return arr
        // }

        //filter + indexOf
        // function distinct(arr){
        //     return arr.filter((elem,index) => {
        //         return arr.indexOf(elem) === index
        //     })
        // }

        // sort + 遍历冒泡
        // function distinct(arr){
        //     let res = []
        //     let sortArr = arr.concat().sort()
        //     let temp = sortArr[0]
        //     res.push(temp)
        //     for(let i = 1; i <sortArr.length; i++){
        //         if(temp === sortArr[i]){
        //             continue
        //         }
        //         temp = sortArr[i]
        //         res.push(sortArr[i])
        //     }
        //     return res
        // }

        // set
        // function distinct(arr){
        //     return new Set(arr)
        // }

        //Object + filter
        function distinct(arr){
            let obj = {}
            return arr.filter(elem => {
                return obj.hasOwnProperty(typeof elem + elem)?
                        false:(obj[typeof elem + elem]=true)
            })
        }

        let arr1 = [1,2,2,3,4,4,5,6,4,2,2,1,9,8,7]
        console.log(arr1)
        let arr2 = distinct(arr1)
        console.log('#',arr2)
        //reduce实现对象数组去重
        
 
 

    </script>
</body>
</html>